package com.tanhua.app.service;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.tanhua.app.exception.BusinessException;
import com.tanhua.app.exception.ErrorResult;
import com.tanhua.commons.utils.Constants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service
public class UserFreezeService {

    @Autowired
    private StringRedisTemplate redisTemplate;
    ;

    // 用户冻结判断 根据用户的id和冻结的类型判断对应的冻结是否存在
    //如果存在冻结数据 抛异常 用户就不能继续操作了
    //freezeingRange(冻结范围) 1-冻结登录 2-冻结发言  3-冻结发布动态
    public void freezeCheck(Long userId, String freezingRange) {
        //1.查询redis中的冻结数据
        String json = redisTemplate.opsForValue().get(Constants.USER_FREEZE + userId);
        //2.判断冻结数据是否存在
        if (StringUtils.isNotBlank(json)) {

            Map map = JSON.parseObject(json, Map.class);
            String redisFreezingRange = map.get("freezingRange").toString();


            //3.如果冻结数据存在 根据冻结的范围抛异常
            if (redisFreezingRange.equals(freezingRange) && "1".equals(freezingRange)) {
                //冻结登录
                throw new BusinessException(ErrorResult.freezeLoginError());
            }
            if (redisFreezingRange.equals(freezingRange) && "2".equals(freezingRange)) {
                //冻结发言
                throw new BusinessException(ErrorResult.freezeSpeakError());
            }
            if (redisFreezingRange.equals(freezingRange) && "3".equals(freezingRange)) {
                //冻结发布动态
                throw new BusinessException(ErrorResult.freezeMovementError());
            }
        }

    }
}
